package org.lemon.cla.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.lemon.cla.pojo.News;
import org.lemon.cla.vo.NewsVo; // 导入 NewsVo
import org.lemon.cla.dto.request.NewsSearchRequest;

public interface INewsService extends IService<News> {

    /**
     * 根据新闻ID获取新闻详情，包含发布者信息。
     * @param newsId 新闻ID
     * @return 新闻视图对象
     */
    NewsVo getNewsVoById(Long newsId);

    /**
     * 分页获取所有新闻，包含发布者信息。
     * @param page 分页对象 (NewsVo 泛型)
     * @return 分页新闻视图对象列表
     */
    IPage<NewsVo> getAllNewsVo(Page<NewsVo> page);

    /**
     * 根据多个条件模糊查询新闻，包括发布人姓名（联查user表），返回 NewsVo 列表。
     * @param page 分页对象 (NewsVo 泛型)
     * @param request 查询请求DTO
     * @return 分页新闻视图对象列表
     */
    IPage<NewsVo> searchNewsByConditions(Page<NewsVo> page, NewsSearchRequest request);
}